Single login procedure for accessing social network information across multiple external systems

ABSTRACT

A social networking system contains information describing users of the social network and various connections among the users. A user can access multiple external systems that communicate with the social networking system to access information about the users of the social networking system. Login status of the user account on the social networking system is maintained. If the login status of the user account on the social networking system indicates that the user is not logged in, the user is required to provide authentication information. If the login status of the user account indicates that the user is logged in, social network information is provided to the user via an external system, subject to the privacy settings of users of the social networking system. If the user logs out from an external system, the user is also logged out from the social networking system.

CROSS-REFERENCE TO RELATED APPLICATIONS

The present application is a continuation of U.S. patent applicationSer. No. 14/271,192, filed May 6, 2014 and is now U.S. Pat. No.9,306,927, which is a continuation of U.S. patent application Ser. No.12/508,526, filed Jul. 23, 2009 and is now U.S. Pat. No. 8,763,152 andis incorporated by reference herein in its entirety.

FIELD OF THE INVENTION

This invention relates to social networking and in particular toaccessing information from a social network across multiple externalsystems outside of the social network.

BACKGROUND

A system, such as a website, that allows users to interact with thesystem typically stores a record for each users of the system. Theserecords may comprise information provided by the user as well asinformation gathered by the system related to activities or actions ofthe user on the system. For example, a system may require a user toenter information such as contact information, gender, preferences,interests, and the like in an initial interaction with the system, whichis stored in the user's record. A user's activities on the system, suchas frequency of access of particular information on the system, alsoprovide information that can be stored in the user's record. The systemmay then use information provided by the user and information gatheredabout the user, to constantly customize interactions of the system withthe user. For example, a website selling books may keep track of a usersprevious purchases and provide the user with information on relatedbooks during subsequent interactions with the system. Information in auser's profile may also be used by the system to target advertisementsthat are of interest to the user. Using information collected from andabout users results in a system that is more efficient and beneficialfor both the user and the system.

However, prior systems, including websites, lack the ability to useinformation associated with a user's social connections or activities tocustomize and/or personalize the user's experience while using thesystem. Access to information about the user's social interactionsand/or the activities of a user's social connections (e.g. friends,family, co-workers, etc.) improves the user's experience while using thesystem and increases the chance that the user will use the system in thefuture. For example, users visiting a website that sells books may beinterested in books that their social connections have looked at, bookreviews or comments provided by their social connections, and othersocial network information that might inform their purchases of bookfrom the website. The system itself also benefits, because it canleverage information about the user and the user's social connections tomore accurately determine what a user might be interested in. Such asystem can use social network information to customize a user'sexperience and target products, services and/or advertisements to theuser.

Typical systems do not possess sufficient information about a user'ssocial connections to customize the user's experience or effectivelytarget advertising to the user. Assembling enough information about auser's social connections for these purposes requires a system tointeract with a large number of users over an extended period of time.The majority of websites will not have the resources, expertise, or userbase required to build and maintain a system of the scale necessary tocapture, organize and maintain a sufficient amount of information aboutusers' social connections and their activities. Thus, users of thesesystems will have an inferior experience, and thecustomization/personalization provided by these sites is unlikely toaccurately take into account or reflect information about the user'ssocial connections and their activities.

Even if the problems described above were solved so that multiple othersystems or websites were able to track and manage a user's socialconnections, this would lead to additional problems that would have tobe solved. For example, to access social information in multiplesystems, a user may be required to provide authentication for eachsystem that the user accesses. The information required to authenticateat each system can be different, requiring the user to keep track of theauthentication information for each system, thus further reducing thequality of the user experience.

SUMMARY

In addition to maintaining information provided by a user andinformation about a user's activities on the system, a social networkingsystem also maintains information related to a user's socialconnections. Information collected by a social networking system aboutits users is referred to herein as “social network information.” Socialnetwork information can be highly valuable to an external system thatdoes not or cannot maintain such information about its users.Embodiments of the invention allow multiple external systems to accesssocial network information, while also providing a mechanism formanaging the login status of a user of these multiple systems. Thisfrees users from the need to maintain authentication informationseparately for each external system and allows external systems toleverage social network information for various purposes.

Embodiments present computer implemented methods and systems foraccessing social network information across multiple external systems. Asocial networking system maintains login status associated with a useraccount for a user of the social networking system. A request for socialnetwork information associated with the user account is received. Thesocial network information is requested for use by an external system.The social networking system determines the login status of the useraccount associated with the request. If the login status of the useraccount indicates that the user is not logged in, the user is requiredto input authentication information for the user account. On the otherhand, if the login status indicates that the user is logged into thesocial networking system, a response including social networkinginformation is sent to the requestor without requiring the user to inputauthentication information for the user account.

If the user responds with correct authentication information, the loginstatus of the user account is changed to indicate that the user islogged in and the social networking system responds to the request withthe social network information. In an embodiment, the user sends arequest to link external systems to the user account on the socialnetworking system. If a determination is made that the user account ofthe external system is not connected to the user account of the socialnetworking service, an interface is displayed to the user, allowing theuser to link the two accounts. Accordingly, once the user providescorrect authentication information to access an external system, theuser is logged into all the external systems that are linked to the useraccount of the social networking system.

In an embodiment, the request for information is obtained directly froman external system. Alternatively, the request for information isreceived from a client device that is processing a markup languagedocument received from an external system. In an embodiment, the socialnetworking system sends a subset of the requested information subject toprivacy settings of users of the social networking system. In anotherembodiment, the social networking system sends the requested informationalong with the privacy settings of relevant users of the socialnetworking system to an external system. The external system enforcesthe privacy settings of the users of the social networking system inorder to ensure that a user who is not allowed to access someinformation in the social networking system is not allowed to access thesame information via the external system. In an embodiment, if the userrequests to log out from an external system, the social networkingsystem updates the login status of the user account to indicate that theuser is logged out. Accordingly, the user is logged out from all theexternal systems linked to the social networking system and needs toprovide authentication information to log back into any of the externalsystems.

The features and advantages described in this summary and the followingdetailed description are not all-inclusive. Many additional features andadvantages will be apparent to one of ordinary skill in the art in viewof the drawings, specification, and claims hereof.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is high-level diagram illustrating how a user can connect tomultiple external systems and the social networking system, inaccordance with one embodiment of the invention.

FIG. 2 is a diagram of the system architecture that allows a user toaccess multiple external systems that interact with a social networkingsystem for retrieving social network information, in accordance with anembodiment of the invention.

FIG. 3 is an example diagram of privacy settings of a user of a socialnetwork, in accordance with one embodiment of the invention.

FIG. 4 is an interaction diagram of a process in which a client deviceobtains social network information from a social networking system frommultiple external systems and the external systems interact directlywith the social networking system, in accordance with one embodiment ofthe invention.

FIG. 5 is an interaction diagram of a process in which a client deviceobtains social network information from multiple external systems andthe client receives markup language document with instructions tointeract with the social networking system, in accordance with oneembodiment of the invention.

The figures depict various embodiments of the present invention forpurposes of illustration only. One skilled in the art will readilyrecognize from the following discussion that alternative embodiments ofthe structures and methods illustrated herein may be employed withoutdeparting from the principles of the invention described herein.

DETAILED DESCRIPTION

Interactions Between an External System and a Social Network

A social networking system offers its users the ability to communicateand interact with other users of the social networking system. Usersjoin the social networking system and then add connections to a numberof other users to whom they desire to be connected. Systems outside ofthe social networking system, called external systems, can accessinformation available in the social networking system. Users of theexternal system can be users of a social networking system. The externalsystem can access information from the social networking system using anApplication Programming Interface (API) associated with or provided bythe social networking system. Alternatively, the external system cansend a markup language document to the client device with instructionsfor interacting with the social networking system. The external systemmay use the information obtained from the social networking system forvarious purposes.

FIG. 1 shows the interaction between a client device 110 of a user 100,external systems 120 and a social networking system 130. A user 100 maybe a user of the social networking system 130 and/or user of theexternal system 120. The social networking system 130 keeps a useraccount 140 for each user of the social networking system 130. Anexternal system 120 may keep accounts 150 for users of the externalsystem 120. A user may have accounts 150 on multiple external systems120, for example, user 100(a) can have an account 150(a) on externalsystem 120(p) and account 150(e) on external system 120(q). Also, a usercan have an account 150 on an external system 120 but no account on adifferent external system 120.

An external system 120 can have several users 100 that interact with thesystem and a user 100 can interact 180 with multiple external systems120. An external system 120 may interact with the social networkingsystem 130 to retrieve information available in the social networkingsystem 130. The user 100 can also directly interact 160 with the socialnetworking system 130. A user can link an account 150 on an externalsystem 120 with the user's account 140 on the social networking system130. A user can also link an external system with the user's account 140on the social networking system 130 by providing details of the externalsystem to the social networking system 130. In this scenario, the usermay not have an account on the external system 120. If an externalsystem 120 is not linked to the user account of social networking system130, a request may be sent to the user to link the two accounts. Therequest may present an interface to the user, allowing the user to inputauthentication information. If the user successfully provides theauthentication information the external system is linked to the socialnetworking system 130. If a user links an external system 120 with theuser's account 140 on the social networking system 130, the socialnetworking system 130 stores information related to the external system120 (including the users activities on the external system 120) alongwith the account 140 of the social networking system 130. Theinformation related to linked external systems stored by the socialnetworking system 130 is used in an embodiment by the social networkingsystem 130 to facilitate the process of the user logging into multipleexternal systems 120 (and can also be used for other purposes, includingto customize or enhance the user's experience on the social networkingsystem, to target advertisements, etc.). In an embodiment, the loginstatus of all the external system 120 linked to the social networkingsystem 130 is treated as the same. Accordingly, if a user logs into anyone of the external systems 120, the login status for all the externalsystems 120 (that have been linked by the user with the account on thesocial networking system) is assumed to be “logged in.” Similarly, ifthe user logs out of any one of these external systems 120, the loginstatus for all the external systems 120 is assumed to be “logged out.”The login status for all the linked external systems 120 is stored inthe social networking system 130.

In an embodiment, the social networking system 130 maintains a loginstatus of the user 100 in the user account 140 when the user logs intoany of the external systems 120. If the user is not logged into any ofthe external system 120, the login status of the user indicates “notlogged in.” If the user attempts to access social network informationfrom an external system 120(a), the user is requested to provideauthentication information for the social networking system 130. If theuser successfully authenticates, the login status of the user in thesocial networking system 130 is changed to “logged in.” If the userattempts to access any other external system 120, for example, externalsystem 120(b), the login status of the user in the social networkingsystem 130 is checked. If the login status of the user is determined tobe “logged in,” the user is allowed access to the external system120(b). Hence the user is able to access social network information frommultiple external systems 120 by authenticating into the socialnetworking system 130 once.

In accordance with an embodiment of the invention, the external system120 can access social networking system 130 information or provideinformation to the social networking system 130 using an ApplicationProgramming Interface (API) associated with or provided by the socialnetworking system 130. Alternatively, an external system 120 may send amarkup language document to the client device 110 with instructions foraccessing the social networking system 130. The client device 110processes the instructions in the markup language document and accessesthe social networking system 130 for either providing information orretrieving information. The external system may obtain information fromthe social networking system 130 for various purposes. For example, theexternal system may present activities of a user's connections on theexternal system to the user. The external system may also sendinformation related to the user's activities performed on the externalsystem to the social networking system 130. For example, informationrelated to purchases made by a user on an external system may be sent tothe social networking system. The information related to purchases madeby the user in the external system can be made available to connectionsof the user in the social network as a form of social advertisement.

The social networking system 130 maintains information about connectionsamong its users. As used herein, the term “connection” refers to anyother user (whether an individual or other entity) of the socialnetworking system to whom a user has formed a connection, association,or relationship via the social networking system. Connections may beadded explicitly by a user or automatically created by the socialnetworking system based on common characteristics of the users (e.g.,users who are alumni of the same educational institution). Connectionsin social networks can be one or two-way connections. For example, ifBob and Joe are both users and connected to each other in the website,Bob and Joe have a two-way connection. If Bob is interested in learningmore information about Joe, but there is not a reciprocal connection, aone way connection may be formed with Bob being connected to Joe, butJoe not being connected to Bob. The connection between users may be adirect connection; however, some embodiments of a social network allowthe connection to be indirect via one or more levels of connections. Thesocial networking system keeps a record of information for each user andthe connections among the users. The record of users and theirconnections in the social networking system may be called a “socialgraph.”

System Architecture

FIG. 2 is a high level block diagram illustrating a system environmentsuitable for allowing a user to access multiple external systems 120that interact with a social networking system 130 for retrieving socialnetwork information. The system environment comprises one or more clientdevices 110, one or more external systems 120, a social networkingsystem 130, and a network 210. In alternative configurations, differentand/or additional modules can be included in the system.

The client devices 110 comprise one or more computing devices that canreceive user input and can transmit and receive data via the network210. For example, the client devices 110 may be desktop computers,laptop computers, smart phones, personal digital assistants (PDAs), orany other device including computing functionality and datacommunication capabilities. The client devices 110 are configured tocommunicate via network 210, which may comprise any combination of localarea and/or wide area networks, using both wired and wirelesscommunication systems.

FIG. 2 contains a block diagram of the social networking system 130. Thesocial networking system 130 includes a web server 250, an API requestserver 270, an authorization server 245, a user accounts store 255, anda connection store 265. FIG. 2 also contains a block diagram of theexternal system 120. The external system 120 includes a web server 225,a content store 230, a user accounts store 235, and a social networkdata store 240. In other embodiments, the social networking system 130or the external system 120 may include additional, fewer, or differentmodules for various applications. Conventional components such asnetwork interfaces, security mechanisms, load balancers, failoverservers, management and network operations consoles, and the like arenot shown so as to not obscure the details of the system.

The social networking system 130 comprises a computing system thatallows users to communicate or otherwise interact with each other andaccess content as described herein. The social networking system 130stores user information in user accounts store 255, for example, userprofile information including biographic, demographic, and other typesof descriptive information, such as work experience, educationalhistory, hobbies or preferences, location, and the like. The socialnetworking system 130 further stores data describing one or moreconnections between different users in the connection store 265. Theconnection information may indicate users who have similar or commonwork experience, group memberships, hobbies, or educational history.Additionally, the social networking system 130 includes user-definedconnections between different users, allowing users to specify theirrelationships with other users. For example, these user-definedconnections allow users to generate relationships with other users thatparallel users' real-life relationships, such as friends, co-workers,partners, and so forth. Users may select from predefined types ofconnections, or define their own connection types as needed.

The web server 250 links the social networking system 130 via thenetwork 210 to one or more client devices 110; the web server 250 servesweb pages, as well as other web-related content, such as Java, Flash,WL, and so forth. In some embodiments, the web server may be used forcommunicating with the external system 120. For example, requests sentby the external system 120 can be received by the web server 250 andprocessed. The web server 250 may include a mail server or othermessaging functionality for receiving and routing messages between thesocial networking system 130 and the client devices 210. The messagescan be instant messages, queued messages (e.g., email), text and SMSmessages, or any other suitable messaging technique.

The API request server 270 allows external websites 200 to accessinformation from the social networking system 130 by calling APIs. TheAPI request server 270 may also allow external systems 120 to sendinformation to social networking website by calling APIs. An externalsystem 120 sends an API request to the social networking system 130 viathe network 210. The API request is received at the social networkingsystem 130 by the API request server 270. The API request server 270processes the request by calling the appropriate program code to collectany appropriate response, which is then communicated back to theexternal system 120 via the network 210. In an embodiment, the webserver 250 receives a request and calls the API server 270 in order toprocess the request. The information based on the response from the APIserver 270 is sent in response to the request received by the web server250. A device that does not communicate with the web server 250 cancommunicate directly with the API request server 270 to obtaininformation.

The authorization server 245 enforces the privacy settings of the usersof the social networking system. The privacy setting of a userdetermines how particular information associated with a user can beshared. The privacy setting comprises the specification of particularinformation associated with a user and the specification of the entityor entities with whom the information can be shared. The entities withwhich information can be shared may include other users, applications,external systems, or any entity that can potentially access theinformation. The information that can be shared by a user comprises userprofile information photos, videos, links, text entries, phone numbersassociated with the user, user's connections, actions taken by the usersuch as adding a connection, changing user profile information, and anyother information maintained by the social networking system that isassociates with the user. Systems and methods for allowing an externalsystem to access information in a social networking system using APIsthat enforce privacy settings defined in the social networking systemare disclosed in U.S. application Ser. No. 12/324,761, filed Nov. 26,2008, which is incorporated by reference in its entirety. Systems andmethods for allowing users to control accessibility of content in asocial networking system is disclosed in U.S. application Ser. No.12/485,856 filed on Jun. 16, 2009, which is incorporated by reference inits entirety. Systems and methods for providing privacy settings forapplications associated with a user profile are disclosed in Ser. No.12/154,886 filed on May 27, 2008, which is incorporated by reference inits entirety.

FIG. 3 illustrates an example of how the privacy settings of a user 360of the social networking system 130 control the accessibility ofinformation associated with the user 360 to the user's friends 305 orapplications 310. As shown in FIG. 3, the arrow 350 indicates thatfriend 305(A) is allowed to access the work phone number 340 of user360, and arrow 355 indicates that friend 305(A) is allowed to access themobile phone number of the user 360. Friend 305(A) does not have accessto information such as profile photo 315 of the user 360 or the user'sfriends list 325. On the other hand, friend 305(B) is allowed to accessthe friends list 325. The information associated with a user includesactions taken by a user such as the action of adding a new friend 330.The user 360 can completely block another user or an application fromaccessing any information associated with the user 360. A user or anapplication that is blocked by the user 360 does not have access to anyinformation associated with user 360.

As discussed above, the social networking system 130 maintains dataabout objects with which a user may interact. To this end, the useraccounts store 255 and the connection store 265 store instances of thecorresponding type of objects maintained by the social networking system130. Each object type has information fields that are suitable forstoring information appropriate to the type of object. For example, theuser account store 255 contains data structures with fields suitable fordescribing a user's profile, the login status of a user, and the useraccounts in external systems 120 that are linked to a correspondingaccount in the social networking system 130. When a new object of aparticular type is created, the social networking system 130 initializesa new data structure of the corresponding type, assigns a unique objectidentifier to it, and begins to add data to the object as needed. Thismight occur, for example, when a user becomes a member of the socialnetworking system 130, the social networking system 130 generates a newinstance of a user account in the user account store 255, assigns aunique identifier to the user account, and begins to populate the fieldsof the user account with information provided by the user.

The web server 225 of the external system 120 links the external system120 via the network 210 to one or more client devices 205; the webserver 250 serves web pages, as well as other web-related content, suchas Java, Flash, WL, and so forth. The content presented to the clientdevice 205 is stored in the content store 230. In some embodiments, theweb server 225 may be used for interacting with the social networkingsystem 130. For example, requests and responses sent by the socialnetworking system 130 can be received by the web server 225 forprocessing.

The external system 120 maintains a user accounts store 235 to maintaindata associated with accounts of users of the external system 120. Theuser accounts store 235 may store information associated with a userincluding user name and password, as well as other information relevantto the external system 120. For example, email address, mailing address,and billing information. In some embodiments, the external system 120can also store additional information, including user actions orinterests, or any other information gathered by the external systemassociated with user.

Accessing Social Network Information Using External Systems

FIG. 4 is an interaction diagram of a process in which a client deviceobtains social network information from multiple external systems 120and the external systems 120 interact with the social networking system130. The user 100 accesses the external system 120(m), causing theclient device 110 to send 400 a request for information from theexternal system 120(m) to the social networking system 130. The externalsystem 120(m) determines 405 if there is a need for social networkinformation from the social networking system 130 and, if so, whatinformation is required to respond to the request 400 for information.The external system 120(m) sends 410 request for the required socialnetwork information from the social networking system 130. In anembodiment, the request 410 may be sent to the API request server 270 toexecute an API provided by the social networking system 130. The APIrequest server 270 communicates with the authorization server 245 tocheck the login status of the user account in the user accounts store255. If the user hasn't logged into the social networking system 130,the login status of the user account is determined to be “not loggedin.” If the user is determined to be not logged in to the socialnetworking system 130, the authorization server 245 needs authenticationinformation, for example, user name and password from the user beforethe social network information requested 410 is provided to the externalsystem 120(m). Hence, the social networking system 130 sends 420 arequest for authentication information for the user to the externalsystem 120(m).

The external system 120(m) requests 425 authentication information fromthe client device 110. In an embodiment, the request 425 presents aninterface to the user allowing the user to input authenticationinformation for the social networking system 130, for example, ausername and password. The interface presented to the user on the clientdevice 110 can be a popup window. In an embodiment, the username andpassword requested are for the user account 140 of the user stored inthe user accounts store 255 in the social networking system 130. Theuser interface presented to the user may explicitly display informationto the user indicating that the user is logging into the socialnetworking system 130 by presenting a uniform resource locator (URL) ofthe social networking system 130.

The authentication information provided 430 by the user is sent 435 bythe external system 120 to the social networking system 130. If the userprovides 430 the correct authentication information, the user is loggedinto the social networking system 130 and the login status of the user'saccount in the user account store 255 is set to “logged in.” If the usersuccessfully logs into the social networking system 130, social networkinformation requested by the external system 120(m) is sent 445 toexternal system 120(m). The external system 120(m) sends 450 theinformation requested 400 by the client device 110 to the client device110. In an embodiment, the information sent 445 by the social networkingsystem 130 is a subset of the requested 410 information determined basedon the privacy settings of the users of the social networking system130. In another embodiment, the external system may use the socialnetwork information to determine content from the external system 120that is sent 450 to the client device 110. In another embodiment, theexternal system 120 may perform some processing based on the socialnetwork information received but may not send any information to theclient device in response.

In an embodiment, the user has an account stored in the user accountsstore 235 of the external system 120(m), which has differentauthentication information compared to the user account stored in theuser accounts store 255 in the social networking system 130. The usercan send information to the social networking system 130, linking theuser account in the external system 120 with the user account in thesocial networking system 130. If the user account in the external system120 is linked with the user account in the social networking system 130,the external system 120 is considered to be linked to the user accountin the social networking system 130. In an embodiment, the user isallowed to link the external system 120 to the user account in thesocial networking system 130, for example, if the user does not have anaccount in the external system 120. If an external system is linked tothe user account in the social networking system 130, the user may bepresented with a user interface that allows the user to enterauthentication information. When the user successfully presents therequired information for authentication, the user is automaticallylogged into the social networking system 130, thereby changing the loginstatus of the user account 140 stored in the user accounts store 255 to“logged in.” If the two accounts are not linked together, the user ispresented with a user interface to link the two accounts by inputtingauthentication information for the two accounts, for example, theusernames and passwords of the two accounts.

In an embodiment, the user may not have an account that is stored on theexternal system 120. Based on the information provided to the externalsystem 120, the external system 120 determines that the user has anaccount with the social networking system 130. In one embodiment theexternal system 120 can determine if the user has an account on thesocial networking system 130 by communicating with the social networkingsystem 130. In one embodiment, the client device checks a session cookieassociated with the social networking system 130 on the client devicethat indicates that the user has an account on the social networkingsystem. The session cookie may also indicate whether the user iscurrently logged into the social networking system. Alternatively, themarkup language document sent by external system to the client devicecan cause the client device to send a request to the social networkingsystem to determine if the user has an account on the social networkingsystem. In another embodiment, the external system directly sends arequest to the social networking system using APIs provided by thesocial networking system to determine if the user has an account on thesocial networking system. The session created by the user with theexternal system 120 is treated as an account, even though no account isexplicitly created by the external system 120 for the user. In oneembodiment, the user may provide input indicating that the user has anaccount on the social networking system 130. For example, a browser linkor a user interface button may be provided on the external system 120 toallow the user to indicate that the user has an account in the socialnetworking system 130. The user clicks on the browser link or the userinterface button to indicate that the user has an account on the socialnetworking system 130 and would like to link the session with theexternal system 120 to the account in the social networking system 130.Accordingly, multiple sessions created by the user on different externalsystems 120 can execute the process shown in FIG. 4 for interacting withthe social networking system 130 without requiring the user to provideauthentication information separately for each session. In anembodiment, if the user does not have an explicit account stored on theexternal system, an explicit account can be automatically created on theexternal system based on the information obtained from the socialnetworking system. This allows creation of account on the externalsystem for use by the external system without requiring the user toenter various details required to create the account.

When the user is logged into the social networking system 130, the usercan send a request for information 455 to another external system120(n). If the external system 120(n) determines 460 a need for socialnetwork information, the external system 120(n) requests 465 the socialnetwork information from the social networking system 130. The request465 may be an API call to the API request server 270. If the socialnetworking system 130 determines that the user account 140 for the userof the client device 110 has a login status “logged in,” the socialnetworking system 130 sends 475 the requested social network informationto the external system 120(n). In an embodiment, the information sent475 by the social networking system is a subset of the requested 465information determined based on the privacy settings of the users of thesocial networking system 130. The external system 120(n) sends 480 theinformation requested 455 to the client device 110. In an embodiment,the external system processes the information to combine the socialnetwork information with information available in the external systemand sends the combined information to the client device 110. In anotherembodiment, information obtained from the social networking system isnot sent to the client device but instead used for processing todetermine information that may be subsequently displayed to the user. Inanother embodiment, social networking system information may be used todetermine whether specific content from the external system is displayedto the user or not. For example, the age of a user obtained from thesocial network may be used to determine of specific content can bedisplayed to the user or not. Alternatively, activities performed by theuser in the social networking system may be used to determine thecontent displayed to the user. For example, a member active inparticular social groups may be displayed content determined based onthe members activities.

FIG. 5 is an interaction diagram of a process in which a client deviceobtains social network information from multiple external systems 120and the client device 110 receives a markup language document from theexternal system with instructions for interacting with the socialnetworking system 130. When the user 100 accesses an external system120(m) using the client device 110, the client device 110 sends 505 arequest for information to the external system 120(m). The externalsystem 120(m) sends 510 a markup language document to the client device110. The markup language document contains instructions for the clientdevice 110 to access the social networking system 130 for informationused for displaying the markup language document. The client device 110processes 515 the markup language document. The processing 515 of theinstructions in the markup language document causes client device 110 tosend 520 a request for social network information to the socialnetworking system 130. In an embodiment, the request is sent to the webserver 250 of the social networking system 130. In another embodiment,the request is sent to the API request server 270 of the socialnetworking system 130.

The social networking system 130 checks the login status of the useraccount 140 stored in the user accounts store 255 of the socialnetworking system 130. If the social networking system 130 determinesthat the login status of user account 140 indicates that the user is notlogged in, the social networking system 130 sends a request forauthentication information to the client device 110. In an embodiment,the request 530 presents an interface to the user allowing the user toinput authentication information for the social networking system 130,for example, the username and password. The interface presented to theuser on the client device 110 can be a popup window. The authenticationinformation presented by the user is sent 535 to the social networkingsystem 130. If the user presents the correct authentication information,the user is logged into the social networking system 130 and the loginstatus of the user's account in the user account store 255 is set to“logged in.” If the user successfully logs into the social networkingsystem 130, social network information requested by the external system120(m) is sent 545 to the client device 110. The client device 110 usesthe social network information to render the markup language documentfor display. In an embodiment, markup language document includesinstructions to process the information obtained from the socialnetworking system determine the information rendered for display. Forexample, the information obtained from the social networking system maybe combined with content from the external system in order to present acombination of the information. Alternatively, the information obtainedfrom the social networking system may be used to determine which contentfrom the external system is displayed on the client device 110.

The user 100 accesses an external system 120(n) using the client device110, after the access to the external system 120(m) described aboveresulting in the user getting logged into the social networking system130. The client device 110 sends 550 a request for information to theexternal system 120(n). The external system 120(n) sends 555 a markuplanguage document to the client device 110. The client device 110processes 560 the markup language document. The markup language documentcontains instructions for the client device 110 to access the socialnetworking system 130 for social network information used for renderingthe markup language document for display. The processing 560 of theinstructions in the markup language document causes client device 110 tosend 565 a request for social network information to the socialnetworking system 130. In an embodiment, the request is sent to the webserver 250 of the social networking system 130. The social networkingsystem 130 determines that the login status of the user account 140stored in the user accounts store 255 of the social networking system130 is “logged in.” Accordingly, the social networking system 130 doesnot require any authentication from the user and sends 575 the requested565 social network information to the client device 110. The informationsent 575 by the social networking system 130 may be determined based onthe privacy settings of the users of the social networking system 130.

In an embodiment, a subset of the social network information requested410, 465, 520, 565 may be sent 445, 475, 545, 575 by the socialnetworking system 130 based on privacy settings of the users of thesocial networking system 130. For example, the privacy settings mayrestrict the information that an external system 120 is allowed toaccess. The social network information provided to the external systemis the subset of the requested information that the external system 120is allowed to access based on the user's privacy settings. Furthermore,the social network information requested may be information associatedwith the connections of the user in the social networking system 130.The subset of social network information provided to the external systemis determined based on the privacy settings of the user as well as theprivacy settings of the user's connections in the social networkingsystem 130. The enforcement of the privacy settings ensures that a userwho is not allowed to see specific information associated with anotheruser within the social networking system is not allowed to see the sameinformation outside of the social networking system context, forexample, using an external system 120.

In an embodiment, the privacy settings are not enforced by the socialnetworking system and the information requested 410, 465 by an externalsystem is sent 445, 475 by the social networking system to the externalsystem along with the privacy setting information of the members of thesocial networking system. The external system enforces the privacysettings information of the members of the social networking system andmakes sure that a user who is not allowed to see specific informationwithin the social networking system is not allowed to see the sameinformation in the external system. In another embodiment, specifictypes of privacy settings may be enforced by the social networkingsystem, whereas other types of privacy setting information may becommunicated to the external system and enforced by the external system.In an embodiment corresponding to FIG. 5, social networking system sends530, 575 the information requested 520, 565 by the client device alongwith the privacy setting information of the members of the socialnetworking system. The markup language document processed by the clientdevice includes instructions to enforce privacy settings of users of thesocial network. The client device enforce privacy settings whilerendering the markup language document in order to male sure that onlythe information allowed to the user in the social networking system isdisplayed on the client device.

An embodiment in which the external systems 120 are websites, a browserredirect mechanism may be used for or sending 520, 565 the request fromthe client device 110 to the social networking system 130. A redirectmechanism that does not present the details of the redirect, forexample, the address of the social networking system 130 provides abetter user experience. In embodiments, where the external system 120and social networking system 130 are websites, a hidden frame redirectmay be used for sending 520 the request for social network informationor for sending 535 the authentication information from the client device110 to the social networking system 130. The hidden frame redirectprovides a better user experience compared to a redirect that explicitlydisplays the request sent to the social networking system 130 in theuser interface, such as a browser redirect that displays the URL of thewebsite being redirected to. The hidden frame redirect does not displaythe URL of the website being redirected to making the redirect processtransparent to the user and may also provide improved performancecompared to an explicit browser redirect.

Another embodiment uses instructions provided in a scripting languagethat can be executed on the client device 110 for sending 520 therequest for social network information or for sending 535 theauthentication information from the client device 110 to the socialnetworking system 130. An example of a scripting language that can beused for a client device 110 is the JAVASCRIPT language. In anotherembodiment, the markup language document contains custom tags that canbe interpreted by a scripting engine using a custom tag library. Thecustom tags provide the instructions necessary for the client device 110to send 520 the request for social network information or to send 535the authentication information from the client device 110 to the socialnetworking system 130.

In one embodiment, the request for authentication information sent 420,530 by the social networking system 130 includes security questions tothe user based on social network information associated with the useravailable on the social networking system 130. The security question maybe based on social network information associated with the connectionsof the user available on the social networking system 130. The securityquestion based on social network information associated with the user iscalled a social CAPTCHA (an acronym for “Completely Automated TuringTest To Tell Computers and Humans Apart”). The user is successfullyauthenticated by the social networking system 130 if the user providescorrect answers to one or more security questions presented to the user.For example, a social CAPTCHA may ask the user a question that requiresthe question to know the profile status that the user posted on thesocial networking system 130 or an action taken by the user on thesocial networking system 130. A social CAPTCHA may ask a member of asocial network to identify an image of one of the member's connectionsin the social network. In some embodiments, the rigorousness of thesecurity questions may be determined based on suspiciousness of thesession requesting information. Systems and methods for presentingsocial CAPTCHA are disclosed in U.S. application Ser. No. 12/399,723,filed Mar. 6, 2009, which is incorporated by reference in its entirety.

A user can send a log out message to an external system 120 for loggingout from the external system 120. In an embodiment, when the user logsout from any one of the external systems 120 linked with the socialnetworking system 130, the user is logged out from the social networkingsystem 130. If the user logs out from an external system 120, a requestis sent to the social networking system 130 to update the login statusof the user's account in the social networking system 130 to “not loggedin.” As a result, the user is logged out of the social networking system130 and is considered logged out from all external systems linked to thesocial networking system. Subsequently, if the user attempts to accessinformation from any external system 120, the user is requested to inputauthentication information again so as to log into the social networkingsystem 130. The request to log out from the social networking system 130may be sent to the social networking system 130 by the external system120 using APIs of the social networking system 130. Alternatively,external system 120 can send a markup language document to the clientdevice 110 in response to the request to logout form the external system120. The markup language document can contain instructions that whenexecuted by the client device 110, cause the client device 110 to sendthe request to the social networking system 130 for logging out from thesocial networking system 130.

Alternative Applications

The foregoing description of the embodiments of the invention has beenpresented for the purpose of illustration; it is not intended to beexhaustive or to limit the invention to the precise forms disclosed.Persons skilled in the relevant art can appreciate that manymodifications and variations are possible in light of the abovedisclosure.

Some portions of this description describe the embodiments of theinvention in terms of algorithms and symbolic representations ofoperations on information. These algorithmic descriptions andrepresentations are commonly used by those skilled in the dataprocessing arts to convey the substance of their work effectively toothers skilled in the art. These operations, while describedfunctionally, computationally, or logically, are understood to beimplemented by computer programs or equivalent electrical circuits,microcode, or the like. Furthermore, it has also proven convenient attimes, to refer to these arrangements of operations as modules, withoutloss of generality. The described operations and their associatedmodules may be embodied in software, firmware, hardware, or anycombinations thereof.

Any of the steps, operations, or processes described herein may beperformed or implemented with one or more hardware or software modules,alone or in combination with other devices. In one embodiment, asoftware module is implemented with a computer program productcomprising a computer-readable medium containing computer program code,which can be executed by a computer processor for performing any or allof the steps, operations, or processes described.

Embodiments of the invention may also relate to an apparatus forperforming the operations herein. This apparatus may be speciallyconstructed for the required purposes, and/or it may comprise ageneral-purpose computing device selectively activated or reconfiguredby a computer program stored in the computer. Such a computer programmay be stored in a tangible computer readable storage medium or any typeof media suitable for storing electronic instructions, and coupled to acomputer system bus. Furthermore, any computing systems referred to inthe specification may include a single processor or may be architecturesemploying multiple processor designs for increased computing capability.

Embodiments of the invention may also relate to a computer data signalembodied in a carrier wave, where the computer data signal includes anyembodiment of a computer program product or other data combinationdescribed herein. The computer data signal is a product that ispresented in a tangible medium or carrier wave and modulated orotherwise encoded in the carrier wave, which is tangible, andtransmitted according to any suitable transmission method.

Finally, the language used in the specification has been principallyselected for readability and instructional purposes, and it may not havebeen selected to delineate or circumscribe the inventive subject matter.It is therefore intended that the scope of the invention be limited notby this detailed description, but rather by any claims that issue on anapplication based hereon. Accordingly, the disclosure of the embodimentsof the invention is intended to be illustrative, but not limiting, ofthe scope of the invention, which is set forth in the following claims.

What is claimed is:
 1. A computer implemented method comprising:maintaining, by a social networking system, a single login status for auser account with the social networking system, the single login statusallowing a user of the user account to login to multiple externalsystems using authentication information for the social networkingsystem; receiving, from an external system outside the social networkingsystem, a request for information from the social networking system;determining that the external system is linked to the user account ofthe social networking system; determining that user is not logged intothe user account of the social networking system, wherein the user isunable to access the external system when the user is not logged intothe user account of the social networking system; prompting the user forthe authentication information for the user account of the socialnetworking system; responsive to receiving the authenticationinformation, updating the single login status to indicate that the useris logged into the user account of the social networking system, whereinthe user is able to access to the external system when logged into theuser account of the social networking system; and providing the externalsystem the requested information, the requested information whenreceived by the external system causes the external system to providethe user with access to the external system.
 2. The method of claim 1,wherein providing the external system with the requested informationincludes sending the single login status and privacy settings maintainedby the social networking system.
 3. The method of claim 1, wherein thesingle login status provides authentication for the user account of theexternal system via the user account for the user of the socialnetworking system.
 4. The method of claim 1, wherein determining theuser is not logged in into the user account of the social networkingsystem includes determining a status of a session cookie associated withthe social networking system.
 5. The method of claim 1, wherein therequest includes a hidden frame redirect from a client device.
 6. Themethod of claim 1, wherein the request is received from a client deviceprocessing a markup language document received from the external system.7. The method of claim 1, wherein requiring the user to input theauthentication information for the user account of the social networkingsystem comprises providing an interface with a website for the externalsystem for the user to input the authentication information for the useraccount of social networking system.
 8. The method of claim 7, whereinthe external system provides the interface for the user to provide theauthentication information for the user account.
 9. A computerimplemented method comprising: maintaining, by a social networking ansystem, a single login status for a user account with the socialnetworking system, the single login status allowing a user of the useraccount to login to multiple external systems using authenticationinformation for the social networking system; receiving, from anexternal system outside the social networking system, a request forinformation from the social networking system; determining that theexternal system is linked to the user account of the social networkingsystem; determining that user is logged into the user account of thesocial networking system; and responsive to determining that the user islogged into the user account with the social networking system,providing the external system with the requested information, whereinthe user is unable to access the external system when the user is notlogged into the user account of the social networking system.
 10. Themethod of claim 9, wherein the single login status providesauthentication for the user account of the external system via the useraccount for the user of the social networking system.
 11. The method ofclaim 9, wherein determining the user is logged in into the user accountof the social networking system includes determining a status of asession cookie associated with the social networking system.
 12. Themethod of claim 9, wherein the request includes a hidden frame redirectfrom a client device.
 13. The method of claim 9, wherein the request isreceived from a client device processing a markup language documentreceived from the external system.
 14. A computer implemented methodcomprising: maintaining, by a social networking system, a single loginstatus associated with a user account for a user of the socialnetworking system; receiving a request for authentication informationassociated with the single login status of the user account of thesocial networking system, the request originating from an externalsystem outside of the social networking system; determining a useraccount of the external system is linked to the user account of thesocial networking system, the single login status providingauthentication for the user account of the external system via the useraccount for the user of the social networking system; responsive todetermining that the single login status is not logged in: prompting theuser of the user account of the social networking system for theauthentication information for the user account of the social networkingsystem before providing the authentication information, responsive toreceiving the authentication information, updating the single loginstatus to indicate that the user account of the social networking systemis logged in; and responsive to determining that the single login statusis logged in: responding to the request with the authenticationinformation to the external system.
 15. The method of claim 14, whereinthe single login status allowing a user of the user account to login tomultiple external systems using authentication information for thesocial networking system.
 16. The method of claim 14, wherein therequest for social network information comprises a hidden frame redirectfrom a client device.
 17. The method of claim 14, wherein the receivedrequest for social network information is responsive to a hidden frameredirect from a client device.
 18. The method of claim 14, whereinprompting the user of the user account of the social networking systemfor the authentication information for the user account of the socialnetworking system before providing the authentication informationincludes providing an interface for the user to input the authenticationinformation for the user account.
 19. The method of claim 18, whereinthe external system provides the interface for the user to inputauthentication information for the user account.